--
--  Copyright 2022 The Open Islands Authors. All Rights Reserved.
--
--  Licensed under the Apache License, Version 2.0 (the "License");
--  you may not use this file except in compliance with the License.
--  You may obtain a copy of the License at
--
--      http://www.apache.org/licenses/LICENSE-2.0
--
--  Unless required by applicable law or agreed to in writing, software
--  distributed under the License is distributed on an "AS IS" BASIS,
--  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
--  See the License for the specific language governing permissions and
--  limitations under the License.
--

local _M = {
    _VERSION = '0.1'
}

local ngx = ngx
local response_utils = require("response_utils")
local log = require("log")

function _M.routing(address, tls_enabled, next_service, err)
    if address == nil then
        log.error(err)
        response_utils.failed_response(102, err)
    end
    if not ngx.var.ssl_protocol and tls_enabled == true then
        log.debug("next service is ", next_service, " and redirect ssl")
        return ngx.exec("/ssl/"..address..ngx.var.request_uri)
    elseif ngx.var.ssl_protocol and tls_enabled == false then
        log.debug("next service is ", next_service, " and redirect nossl")
        return ngx.exec("/nossl/"..address..ngx.var.request_uri)
    else
        log.debug("next service is ", next_service, " and direct pass upstream")
        ngx.ctx.upstream_address = address
    end
end

return _M

